package pl.edu.agh.ki.ewywiadowka.client;

import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.IsSerializable;

public final class Const {

	public static final EWywiadowkaServiceAsync eWywiadowkaService = GWT
			.create(EWywiadowkaService.class);

	private static final String SERVER_ERROR = "An error occurred while "
			+ "attempting to contact the server. Please check your network "
			+ "connection and try again.";

	public static enum Attributes implements IsSerializable {
		SECRETARY("sekretariat"), STUDENT("uczeń"), UNKNOWN("nie zalogowany"), ATTENDANT(
				"opiekun"), TEACHER("nauczyciel"), EDUCATOR("wychowawca");

		private final String desciption;

		Attributes(String desciption) {
			this.desciption = desciption;
		}

		public String toString() {
			return desciption;
		}

		public boolean equals(Attributes attr) {
			return desciption.equals(attr.desciption);
		}

	}

	public interface MenuButtonNames {

		// Common
		public static final String MESSAGES = "Wiadomosci";
		public static final String LOGIN = "Zaloguj";

		// Wychowawca
		public static final String MARKS_SINGLE = "Oceny jednostkowe";
		public static final String MARKS_FINAL = "Oceny końcowe";
		public static final String ABSENCE = "Nieobecnosci";

		// Opiekun/uczen
		public static final String MARKS = "Oceny";

		// Sekretariat
		public static final String ADD_CLASS = "Dodaj klase";
		public static final String REMOVE_CLASS = "Usun klase";
		public static final String ADD_STUDENT_ATTENDANT = "Dodaj ucznia/opiekuna";
		public static final String MODIFY_STUDENT = "Modyfikuj dane ucznia";
		public static final String REMOVE_STUDENT = "Usun ucznia";
		public static final String ADD_TEACHER = "Dodaj nauczyciela";
		public static final String MODIFY_TEACHER = "Modyfikuj dane nauczyciela";
		public static final String REMOVE_TEACHER = "Usun nauczyciela";
		public static final String ARRANGE_SCHEDULE = "Ustal plan lekcji klasy";
		public static final String LOG_OUT = "Wyloguj";
		public static final String MODIFY_ATTENDANT = "Modyfikuj opiekuna";
		public static final String REMOVE_ATTENDANT = "Usun opiekuna";
		public static final String MODIFY_CLASS = "Modyfikuj klasę";

	}

	public interface CSS {

	}

	public interface Error {

		public static enum AbsenceRegisterMsg implements IsSerializable {
			OK("Dodano nieobecnosc"), ABSENCE_ALREADY_EXISTS(
					"Nieobecnosc w podanym przedziale czasowym juz istnieje"), UNKNOWN("Nieznany błąd"), WRONG_DATE("Niewłaściwe daty startu i końca");

			private final String desciption;

			AbsenceRegisterMsg(String desciption) {
				this.desciption = desciption;
			}

			public String toString() {
				return desciption;
			}
		}

		public static enum StudentRegisterMsg implements IsSerializable {
			OK("Dodano ucznia do systemu"), STUDENT_ALREADY_EXISTS(
					"Uczen o podanym numerze legitymacji istnieje w systemie"), ATTENDANT_ALREADY_EXISTS(
					"Opiekun o podanych danych istnieje w systemie"), LOGIN_EXISTS(
					"Opiekun o podanym loginie już istnieje w systemie"), CONNECTION_ERROR(
					"Błąd połączenia z bazą danych"), UNKNOWN(
					"Wystąpił nieznany błąd");

			private final String desciption;

			StudentRegisterMsg(String desciption) {
				this.desciption = desciption;
			}

			public String toString() {
				return desciption;
			}
		}

		public static enum StudentRemoveMsg implements IsSerializable {
			OK("Usunieto ucznia z systemu"), CONNECTION_ERROR(
					"Błąd połączenia z bazą danych"), UNKNOWN(
					"Wystąpił nieznany błąd");

			private final String desciption;

			StudentRemoveMsg(String desciption) {
				this.desciption = desciption;
			}

			public String toString() {
				return desciption;
			}
		}

		public static enum StudentModifyMsg implements IsSerializable {
			OK("Zmodyfikowano dane ucznia"), STUDENT_ALREADY_EXISTS(
					"Uczen o podanym numerze legitymacji istnieje w systemie"), CONNECTION_ERROR(
					"Błąd połączenia z bazą danych"), UNKNOWN(
					"Wystąpił nieznany błąd");

			private final String desciption;

			StudentModifyMsg(String desciption) {
				this.desciption = desciption;
			}

			public String toString() {
				return desciption;
			}
		}

		public static enum ClassRegisterMsg implements IsSerializable {
			OK("Dodano klasę do systemu"), CLASS_ALREADY_EXISTS(
					"Klasa o podanej literze istnieje w danym roczniku"), CONNECTION_ERROR(
					"Błąd połączenia z bazą danych"), UNKNOWN(
					"Wystąpił nieznany błąd");

			private final String desciption;

			ClassRegisterMsg(String desciption) {
				this.desciption = desciption;
			}

			public String toString() {
				return desciption;
			}
		}

		public static enum ClassRemoveMsg implements IsSerializable {
			OK("Usunieto klase z systemu"), CLASS_NOT_EMPTY(
					"Klasa zawiera uczniow\nProsze przepisac uczniow do innej klasy, lub usunac ich z systemu"), CONNECTION_ERROR(
					"Błąd połączenia z bazą danych"), UNKNOWN(
					"Wystąpił nieznany błąd");

			private final String desciption;

			ClassRemoveMsg(String desciption) {
				this.desciption = desciption;
			}

			public String toString() {
				return desciption;
			}
		}

		public static enum ClassModifyMsg implements IsSerializable {
			OK("Usunieto klase z systemu"), CLASS_ALREADY_EXISTS(
					"Klasa o podanej literze istnieje w danym roczniku"), CONNECTION_ERROR(
					"Błąd połączenia z bazą danych"), UNKNOWN(
					"Wystąpił nieznany błąd");

			private final String desciption;

			ClassModifyMsg(String desciption) {
				this.desciption = desciption;
			}

			public String toString() {
				return desciption;
			}
		}

		public static enum AttendantRegisterMsg implements IsSerializable {
			OK("Opiekun zostal dodany do systemu"), ATTENDANT_ALREADY_EXISTS(
					"Opiekun o podanych danych istnieje w systemie"), CONNECTION_ERROR(
					"Błąd połączenia z bazą danych"), UNKNOWN(
					"Wystąpił nieznany błąd");

			private final String desciption;

			AttendantRegisterMsg(String desciption) {
				this.desciption = desciption;
			}

			public String toString() {
				return desciption;
			}
		}

		public static enum AttendantRemoveMsg implements IsSerializable {
			OK("Opiekun zostal usuniety z systemu"), CONNECTION_ERROR(
					"Błąd połączenia z bazą danych"), UNKNOWN(
					"Wystąpił nieznany błąd");

			private final String desciption;

			AttendantRemoveMsg(String desciption) {
				this.desciption = desciption;
			}

			public String toString() {
				return desciption;
			}
		}

		public static enum AttendantModifyMsg implements IsSerializable {
			OK("Zmodyfikowano dane opiekuna"), ATTENDANT_ALREADY_EXISTS(
					"Opiekun o podanych danych istnieje w systemie"), CONNECTION_ERROR(
					"Błąd połączenia z bazą danych"), UNKNOWN(
					"Wystąpił nieznany błąd");

			private final String desciption;

			AttendantModifyMsg(String desciption) {
				this.desciption = desciption;
			}

			public String toString() {
				return desciption;
			}
		}

		public static enum TeacherRegisterMsg implements IsSerializable {
			OK("Dodano nauczyciela do systemu"), TEACHER_ALREADY_EXISTS(
					"Nauczyciel o podanych danych juz istnieje w systemie"), CONNECTION_ERROR(
					"Błąd połączenia z bazą danych"), UNKNOWN(
					"Wystąpił nieznany błąd");

			private final String desciption;

			TeacherRegisterMsg(String desciption) {
				this.desciption = desciption;
			}

			public String toString() {
				return desciption;
			}
		}

		public static enum TeacherRemoveMsg implements IsSerializable {
			OK("Usunieto nauczyciela z systemu"), CONNECTION_ERROR(
					"Błąd połączenia z bazą danych"), UNKNOWN(
					"Wystąpił nieznany błąd");

			private final String desciption;

			TeacherRemoveMsg(String desciption) {
				this.desciption = desciption;
			}

			public String toString() {
				return desciption;
			}
		}

		public static enum TeacherModifyMsg implements IsSerializable {
			OK("Zmodyfikowano dane ucznia"), TEACHER_ALREADY_EXISTS(
					"Nauczyciel o takich danych juz istnieje w systemie"), CONNECTION_ERROR(
					"Błąd połączenia z bazą danych"), UNKNOWN(
					"Wystąpił nieznany błąd");

			private final String desciption;

			TeacherModifyMsg(String desciption) {
				this.desciption = desciption;
			}

			public String toString() {
				return desciption;
			}
		}

	}

	public static enum FormularMessages implements IsSerializable {
		OK(""), WRONG_SURNAME("Nieprawidlowe imię"), WRONG_NAME(
				"Nieprawidlowe naziwsko"), WRONG_ADDRESS("Nieprawidlowy adres"), WRONG_BIRTH_DATE(
				"Nieprawidlowa data urodzenia"), WRONG_BIRTH_PLACE(
				"Nieprawidlowe miejsce urodzenia"), WRONG_ATTENDANT_SURNAME(
				"Nieprawidlowe imie opiekuna"), WRONG_ATTENDANT_NAME(
				"Nieprawidlowe naziwsko opiekuna"), WRONG_ATTENDANT_ADDRESS(
				"Nieprawidlowy adres opiekuna"), WRONG_ATTENDANT_PHONE(
				"Nieprawidlowy telefon opiekuna"), WRONG_NUMBER(
				"Niepraiwdlowy numer legitymacji"), WRONG_LOGIN(
				"Nieprawidlowy login"), WRONG_PASS("Nieprawidlowe haslo"), WRONG_ATTENDANT(
				"Prosze zaznaczyc przynajmniej jednego opiekuna"), WRONG_SUBJECT(
				"Prosze wybrac przynajmniej jeden nauczany przedmiot");

		private final String desciption;

		FormularMessages(String desciption) {
			this.desciption = desciption;
		}

		public String toString() {
			return desciption;
		}
	}

}
